Partial Class Desglose

    Private dataEquipo As DataTable

    Private Sub obtenerDesgloseGrupal()
        dataEquipo = New accesoBD.TripleCDataSetTableAdapters.selectNotasGrupalTableAdapter().GetData(Me.idS)
        Me.calcularPorcentajeGrupal()
    End Sub

    Public Function verDesgloseGrupal() As DataTable
        Me.obtenerDesgloseGrupal()
        Return Me.dataEquipo
    End Function

    Public Function obtenerRendimientoGrupal() As ArrayList
        Me.obtenerDesgloseGrupal()
        Dim datos As New ArrayList
        datos.Add(Me.puntajeGrupal)
        datos.Add(Me.rendimientoGrupal)
        datos.Add(Me.puntajeGrupalMaximo)
        Return datos
    End Function

    Private Function puntajeGrupal() As ArrayList
        Dim datos As New ArrayList
        Dim valor As Double = 0
        Dim suma As Double = 0
        Dim i As Integer
        For i = 0 To dataEquipo.Rows.Count - 1
            valor = valor + CType(dataEquipo.Rows.Item(i).Item("obtenido"), Double)
            suma = suma + CType(dataEquipo.Rows.Item(i).Item("porcentaje"), Double)
        Next
        datos.Add(valor)
        datos.Add(suma)
        Return datos
    End Function

    Private Function rendimientoGrupal() As ArrayList
        Dim datos As New ArrayList
        Dim valor As Double = 0
        Dim suma As Double = 0
        Dim i, j As Integer
        For i = 0 To dataEquipo.Rows.Count - 1
            valor = valor + CType(dataEquipo.Rows.Item(i).Item("valor"), Double)
            j = j + 1
        Next
        If j > 0 Then
            valor = valor / j
        End If
        datos.Add(valor)
        datos.Add(100)
        Return datos
    End Function

    Private Function puntajeGrupalMaximo() As ArrayList
        Dim datos As New ArrayList
        Dim valor As Double = 0
        Dim suma As Double = 0
        Dim complemento As Double = 0
        Dim i, j As Integer
        For i = 0 To dataEquipo.Rows.Count - 1
            valor = valor + CType(dataEquipo.Rows.Item(i).Item("obtenido"), Double)
            suma = suma + CType(dataEquipo.Rows.Item(i).Item("porcentaje"), Double)
            j = j + 1
        Next
        complemento = 100 - suma
        valor = valor + complemento
        datos.Add(valor)
        datos.Add(100)
        Return datos
    End Function

    Public Function obtenerSumaoria(ByVal pidR As Integer) As String
        Dim i As Integer
        Dim valor As Double = 0
        Dim msj As String
        Dim dt As DataTable = Me.obtenerEvaluacionesEstudiantes(pidR)
        Me.obtenerDesgloseGrupal()
        For i = 0 To dt.Rows.Count - 1
            valor = valor + CType(dt.Rows.Item(i).Item(0), Double)
        Next
        Dim daNota As DataTable = New accesoBD.TripleCDataSetTableAdapters.selectNotaEquipo_RubroTableAdapter().GetData(pidR, Me.idS)
        'Throw New ArgumentException("Pasa 2")
        Dim notaEq As Double = CType(daNota.Rows.Item(0).Item(0), Double) * dt.Rows.Count
        msj = valor & " / " & notaEq
        Return msj
    End Function

    Private Sub calcularPorcentajeGrupal()
        Dim porcen As Double
        Dim valor As Double
        Dim i As Integer
        Dim objN As Evaluacion
        For i = 0 To dataEquipo.Rows.Count - 1
            objN = New Evaluacion()
            porcen = CType(dataEquipo.Rows.Item(i).Item(4), Double)
            valor = CType(dataEquipo.Rows.Item(i).Item(1), Double)
            dataEquipo.Rows.Item(i).Item("obtenido") = objN.calcularPorcentaje(porcen, valor)
        Next
        'tr.nombre, tn.valor, tn.idRubro, tr.tipo, tr.porcentaje, obtenido
        '    0         1           2          3          4            5
    End Sub

    Public Function obtenerEvaluacionesEstudiantes(ByVal pidRubro As Integer) As DataTable
        Return New accesoBD.TripleCDataSetTableAdapters.selectNotas_RubroTableAdapter().GetData(pidRubro, Me.idS)
    End Function

End Class
